export default {
	/* =============== 通用方法 ================ */
	/**
	 * 深拷贝
	 * @param {Object} target
	 */
	deepCopy(target) {
		let copyed_objs = []

		function _deepCopy(target) {
			if (typeof target === 'string') {
				return target.trim()
			}
			if (typeof target !== 'object' || !target) {
				return target
			}
			for (let i = 0; i < copyed_objs.length; i++) {
				if (copyed_objs[i].target === target) {
					return copyed_objs[i].copyTarget
				}
			}
			let obj = {}
			if (Array.isArray(target)) {
				obj = []
			}
			copyed_objs.push({ target: target, copyTarget: obj })
			Object.keys(target).forEach(key => {
				if (obj[key]) {
					return
				}
				obj[key] = _deepCopy(target[key])
			})
			return obj
		}

		return _deepCopy(target)
	},
	/**
	 * 判断传入的对象是否为空
	 * @param {Object} obj
	 */
	isEmptyObj(obj) {
		if (!obj) {
			return true
		}
		return !Object.keys(obj).length
	},
	/**
	 * 判断传入的数组是否有相同的值
	 * @param {Array} arr ['', '']
	 */
	hasSameItem(arr) {
		for (let i = 0; i < arr.length; i++) {
			const val = arr[i]
			for (let j = i + 1; j < arr.length; j++) {
				const _val = arr[j]
				if (val === _val) {
					return true
				}
			}
		}
		return false
	},
	/**
	 * 检测字符串中是否包含 表情图标
	 * @param {String} str 需要检测的字符串
	 */
	includeEmoji(str = '') {
		str = str.toString()
		let regRule = /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g
		return str.match(regRule) ? true : false
	},
	/**
	 * 检测字符串是否符合预设的正则规则
	 * @param {String} str 需要检测的字符串
	 * @param {String} type 正则规则类型
	 * @param {RegExp} custom 当type为“custom”需传入自定义正则
	 */
	regTest(str = '', type, custom) {
		console.log('regRuleTest str:', str, ' type:', type)
		str = str.toString()
		if (!str) {
			return false
		}
		str.trim()
		let regRule = ''
		switch (type) {
			case 'int':
				regRule = /^[1-9]\d*$/
				break // 整数
			case 'float1':
				regRule = /^(\d+)(\.[0-9]{0,1})?$/
				break // 一位小数
			case 'float2':
				regRule = /^(\d+)(\.[0-9]{0,2})?$/
				break // 两位小数
			case 'phone':
				regRule = /^1[3456789]\d{9}$/
				break // 手机号
			case 'idcard18':
				regRule =
					/^([1-6][1-9]|50)\d{4}(18|19|20|21)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
				break // 身份证 18位
			case 'idcard15':
				regRule =
					/^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/
				break // 身份证 15位

			case 'custom':
				regRule = custom
				break // 手动传入正则规则
		}
		console.log('regRule:', regRule)
		if (regRule) {
			return regRule.test(str)
		}
		return false
	},
	isMobile() {
		let isMobile = false
		// if(navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)){
		//   isMobile = true
		// }
		if (window.innerWidth <= 820) {
			isMobile = true
		}
		return isMobile
	},
	// 防抖
	debounce(fn, wait) {
		var timer = null
		return function () {
			if (timer !== null) {
				clearTimeout(timer)
			}
			timer = setTimeout(() => {
				fn.call(this, ...arguments)
			}, wait)
		}
	},
	// 节流
	throttle(fn, delay) {
		let timer = null
		return function () {
			if (!timer) {
				timer = setTimeout(() => {
					fn.apply(this, arguments)
					timer = null
				}, delay)
			}
		}
	},
	/* =============== 通用方法 ================ */
}
